
# 预处理与缩放

"""
一些算法（如神经网络和 SVM）对数据缩放非常敏感。因此，通常的做法是对特征进行调节，使数据表示更适合于这些算法。
通常来说，这是对数据的一种简单的按特征的缩放和移动。

scikit-learn 中的数据变换方法：
    StandardScaler： 将每个特征的平均值设为 0，方差设为 1，使所有特征都位于同一量级。但不保证最大值和最小值.
    RobustScaler： 使用中位数和四分位数进行缩放，忽略异常值.
    MinMaxScaler： 将所有特征缩放到 0 到 1 的范围内.
    Normalizer： 将每个数据点缩放到其特征向量的欧式长度为 1，适用于只关心数据方向的场景

对于一组数字来说，中位数指的是这样的数值 x：有一半数值小于 x，另一半数值大于 x。
较小四分位数指的是这样的数值 x：有四分之一的数值小于 x。
较大四分位数指的是这样的数值 x：有四分之一的数值大于 x。
"""

# 其他的一些预处理技术总结
'''
1. 均值移除（Mean removal）
通常会把每个特征的平均值移除，以保证特征均值为0（即标准化处理）。这样做可以消除特征彼此间的偏差（bias）。
2. 范围缩放（Scaling）
数据点中每个特征的数值范围可能变化很大，因此，有时将特征的数值范围缩放到合理的大小是非常重要的。
3. 归一化（Normalization）
数据归一化用于需要对特征向量的值进行调整时，以保证每个特征向量的值都缩放到相同的数值范围。
机器学习中最常用的归一化形式就是将特征向量调整为L1范数，使特征向量的数值之和为1。
这个方法经常用于确保数据点没有因为特征的基本性质而产生较大差异，即确保数据处于同一数量级，提高不同特征数据的可比性。
4. 二值化（Binarization）
二值化用于将数值特征向量转换为布尔类型向量。
5. 独热编码
通常，需要处理的数值都是稀疏地、散乱地分布在空间中，然而，我们并不需要存储这些大
数值，这时就需要使用独热编码（One-Hot Encoding）。可以把独热编码看作是一种收紧（tighten）
特征向量的工具。它把特征向量的每个特征与特征的非重复总数相对应，通过one-of-k的形式对每个值进行编码。

'''